package models

import (
	"fmt"
	"strconv"
	"strings"
)

//作业06_实现一个订票系统
//票总数
var picNum = 10

func DingPaoStart() {
	for {
		DingPao()
		if checkPic(1) {
			fmt.Printf("===================================目前系统余票:%d======================================", picNum)
			fmt.Println("")
			SystemStart()
		} else {
			fmt.Printf("===================================目前系统余票为%d,无法继续使用====================================", picNum)
			fmt.Println("")
			break
		}
	}
}

func DingPao() {
	fmt.Println("                                    _   _                             _")
	fmt.Println("                                   | | (_)                           | |")
	fmt.Println(" _ __ ___  ___  ___ _ ____   ____ _| |_ _  ___  _ __    ___ _   _ ___| |_ ___ _ __ ___")
	fmt.Println("| '__/ _ \\/ __|/ _ \\ '__\\ \\ / / _` | __| |/ _ \\| '_ \\  / __| | | / __| __/ _ \\ '_ ` _ \\")
	fmt.Println("| | |  __/\\__ \\  __/ |   \\ V / (_| | |_| | (_) | | | | \\__ \\ |_| \\__ \\ ||  __/ | | | | |")
	fmt.Println("|_|  \\___||___/\\___|_|    \\_/ \\__,_|\\__|_|\\___/|_| |_| |___/\\__, |___/\\__\\___|_| |_| |_|")
	fmt.Println("                                                             __/ |")
	fmt.Println("                                                            |___/")
	fmt.Println("==================================欢迎使用订票系统======================================")
	fmt.Println("========================================================================================")
	fmt.Println("========================================================================================")
	fmt.Println("========================================================================================")
	fmt.Println("========================================================================================")
}

//定义个人信息结构体
type User struct {
	name      string
	number    string
	picNumber int
}

var users []User

//工具结构体
type Utel struct {
	hintarr []string
	ex      bool
	errstrs []string
}

func getUtel() Utel {
	var res Utel
	res.ex = false
	res.errstrs = []string{"请输入正确的值", "余票不足，出票失败", "出票成功"}
	var arr = []string{"输入姓名,输入exit重新输入信息", "输入身份证明,输入exit重新输入信息", "需要购买的票数,输入exit重新输入信息"}
	res.hintarr = arr
	return res
}

func SystemStart() {
	var fmtarr = make([]string, 3)
	var user User
	var utel = getUtel()
	var err error
	for i := 0; i < len(utel.hintarr); i++ {
		fmt.Println(utel.hintarr[i])
		fmt.Scan(&fmtarr[i])
		if strings.Contains(fmtarr[i], "exit") {
			utel.ex = true
			break
		}
		if i == 2 {
			user.name = fmtarr[0]
			user.number = fmtarr[1]
			user.picNumber, err = strconv.Atoi(fmtarr[2])
			if err == nil {
				if checkPic(user.picNumber) {
					fmt.Println(utel.errstrs[2])
					picNum -= user.picNumber
					users = append(users, user)
					break
				}
				fmt.Println(utel.errstrs[1])
			} else {
				fmt.Println(utel.errstrs[0])
			}
			i--
		}
	}
}

func checkPic(num int) bool {
	var ishave = false
	if picNum >= num {
		ishave = true
	}
	return ishave
}
